<?php
/**
 * EFoto.php
 * @package Entity
 * 
 */
/**
 * 
 * @author Fabiano Anemone
 * @package Entity
 *
 */
class EFoto extends EEntity implements JSONSerializable{
	/**
	 * Proprietario
	 * @var string $username
	 */
	private $username;
	/**
	 * Id della foto
	 * @var int
	 */
	private $id;
	/**
	 * Nome della foto
	 * @var string
	 */
	private $nomefoto;
	/**
	 * Id della gallery
	 * @var int
	 */
	private $galleryid;
	/**
	 * Percorso immagine ridimensionata
	 * @var string
	 */
	private $nomefototh;
	/**
	 * Percorso immagine ottimizzata
	 * @var string
	 */
	private $nomefotoopt;
	/**
	 * Nome
	 * @var string
	 */
	private $nome;
	/**
	 * Descrizione
	 * @var string
	 */
	private $descrizione;
	/**
	 * Costruttore
	 */
	public function __construct(){
		parent::__construct(); 
	}
	/**
	 * getUsername
	 * @return string $username
	 */
	public function getUsername(){
		return $this->username;
	}
	/**
	 * getId
	 * @return int $id
	 */
	public function getId(){
		return $this->id;
	}
	/**
	 * getNomeFoto
	 * @return string
	 */
	public function getNomeFoto(){
		return $this->nomefoto;
	}
	/**
	 * getNomeFotoOpt
	 * @return string
	 */
	public function getNomeFotoOpt(){
		return $this->nomefotoopt;
	}
	/**
	 *getNomeFotoTh
	 * @return string
	 */
	public function getNomeFotoTh(){
		return $this->nomefototh;
	}
	/**
	 * getGalleryId
	 * @return string
	 */
	public function getGalleryId(){
		return $this->galleryid;
	}
	/**
	 * getDescrizione
	 * @return string
	 */
	public function getDescrizione(){
		return $this->descrizione;
	}
	/**
	 * 
	 * setUsername
	 * @param string $username
	 */

	public function setUsername($username) {
		if(empty($username)){
			throw new ExceptionDati('Campo username vuoto!');
		}
		$this->username = $username;
	}
	/**
	 * 
	 * setId
	 * @param int $id
	 */
	public function setId($id) {
		if(empty($id)){
			throw new ExceptionDati('Campo Id lasciato vuoto!');
		}
		$this->id = $id;
	}
	/**
	 * setGalleryId
	 * @param int $nomegallery
	 */
	public function setGalleryId($galleryid) {
		$this->galleryid = $galleryid;
	}
	/**
	 * setNomeFoto
	 * @param string $nomefoto
	 */
	public function setNomeFoto($nomefoto){
		if(empty($nomefoto)){
			throw new ExceptionDati('Campo nomefoto lasciato vuoto!');
		}
		
		$this->nomefoto = $nomefoto;
	}
	/**
	 * setNomeFotoTh
	 * @param string $nomefototh
	 */
	public function setNomeFotoTh($nomefototh){
		if(empty($nomefototh)){
			throw new ExceptionDati('Campo nomefototh lasciato vuoto!');
		}
		
		$this->nomefototh = $nomefototh;
	}
	/**
	 * setNomeFotoOpt
	 * @param string $nomefotoopt
	 */
	public function setNomeFotoOpt($nomefotoopt){
		if(empty($nomefotoopt)){
			throw new ExceptionDati('Campo nomefotoopt lasciato vuoto!');
		}
		
		$this->nomefotoopt = $nomefotoopt;
	}
	/**
	 * setDescrizione
	 * @param unknown_type $descrizione
	 */
	public function setDescrizione($descrizione){
		$this->descrizione = $descrizione;
	}
	/**
	 * setNome
	 * @param string $nome
	 */
	public function setNome($nome){
		$this->nome = $nome;
	}
	/**
	 * getNome
	 * @return string $nome
	 */
	public function getNome(){
		return $this->nome;
	}
	/**
     * jsonEncode
     * @return string
     */
    public function jsonEncode() {
    	$result = '{';
    	
    	$i = 0;
    	foreach($this as $key => $value) {
    			
    		if($i != 0){
    			$result .= ',';
    		}
    			
    		$result .= JSON_encode($key).':'.JSON_encode($value);
    		$i++;
    	}
    	
    	$result .= '}';
    	
    	return $result;
    }
    
    /**
     * jsonDecode
     * @param stdClass $json
     */
    public function jsonDecode($json) {
    	foreach($json as $key => $value){
    		$this->{'set'.$key}($value);
    	}
    }
    
    /**
     * toArray
     * @return array
     */
    public function toArray() {
    	$result = array();
    	foreach($this as $key => $value) {
    		$result[$key] = $value;
    	}
    	return $result;
    }

}

